<?php
class Home extends Controller {

	function Home()
	{
		parent::Controller();
		$this->load->helper('url');
		$this->load->helper('form');
		$this->load->library('form_validation');
		$this->load->library('session');
		$this->load->model('user_model');
		$this->load->model('noticias_model');
		$this->load->helper('text');
		$this->load->library('encrypt');
	}
	
	function index()
	{
		$this->output->set_header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
		$this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
		$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
		$this->output->set_header("Cache-Control: post-check=0, pre-check=0");
		$this->output->set_header("Pragma: no-cache"); 
		$this->load->view('base/header');
	    $this->load->view('base/index');
		$this->load->view('base/footer');
	}
	function buttonInicio(){
	    $this->load->view('base/index');
	}
	function validUsers()
	{
	$config = array(
               array(
                     'field'   => 'nombreUsuario',
                     'label'   => 'Usuario',
                     'rules'   => 'trim|required|callback_username_check'
                  ),
               array(
                     'field'   => 'passwordUsuario',
                     'label'   => 'Contraseña',
                     'rules'   => 'trim|required'
                  ));
	    $this->form_validation->set_rules($config);
	    
	    /* Luego de descomentar esta linea debe subir el archivo home.php
	     * al servidor, y digitar la nueva clave en el campo contraseña en la pantalla
	     * de inicio de sesion. aparecera la contraseña encriptada debajo del campo contraseña.
	     * Descomentar la linea siguiente para cambiar la password de ingreso a la aplicación.
	    */
	    // echo $this->encrypt->encode($this->input->post('passwordUsuario'));
	    /*
	     * ¡RECUERDE COMENTAR NUEVAMENTE LA LINEA 51 UNA VEZ QUE TERMINE EL PROCESO DE CAMBIO DE CLAVE!
	     * */
	    
	    
	    if ($this->form_validation->run() == FALSE)
	    {
            echo validation_errors('<div class="msj_error">','</div>');
	    }
	    else{
	        $nombreUsuario = $this->sql_quote($this->input->post('nombreUsuario'));
		$level = $this->user_model->getPrivilegio($nombreUsuario);
	        //$passwordUsuario = $this->input->post('passwordUsuario');
	        //$this->checkUsers($nombreUsuario,$passwordUsuario); --deprecated
		$this->login($level->nombre,$level->privilegios);
	    }   
	
	}
	//funcion que checkea si el usuario existe
	function username_check($str){	
		$nombre = $this->user_model->checkUser($this->sql_quote($str));
		if (empty($nombre)){
			$this->form_validation->set_message('username_check', 'El usuario '.$str.' no existe.');
			return FALSE;
		}
		else{
			//limpiamos la pass ingresada
			$pass = $this->sql_quote($this->input->post('passwordUsuario'));
			//segun el nombre usuario ingresado, obtenemos el password de la bd
			$passObtain = $this->user_model->chkCorrect($nombre->idUsuario);
			//si NO esta vacio el pass... solo en caso de que la validacion de arriba halla fallado
			if(!empty($passObtain )){
				$decodePass = $this->encrypt->decode($passObtain->contrasena);
				//si el pass ingresado es distinto a la password decifrada desde la bd
				if(strcmp($decodePass,$pass) != 0){
					$this->form_validation->set_message('username_check', 'La contraseña no coincide');
					return FALSE;
				}
				else
					return TRUE;
			}
		}
	}
	//funcion que limpia entradas para prevenir inyecciones SQL...
	function sql_quote($value){
		if(get_magic_quotes_gpc())
			$value = stripslashes($value);
		//check if this function exists
		if(function_exists("mysql_real_escape_string"))
			$value = mysql_real_escape_string( $value );
		else//for PHP version <4.3.0 use addslashes
			$value = addslashes( $value );			
		$value = str_replace("'","\'",$value);
		return $value;
	}
	//checkUsers deprecated for this version
	function checkUsers($idUsuario,$password)
	{
	    $validUser = $this->user_model->checkUser($idUsuario,$password);
	    if(!empty($validUser)){
	    	//Obtenemos el permiso y Cargamos según sea este.
			$this->login($validUser->nombre,$validUser->privilegios);
		}
		else
			//$this->load->view('base/loginError');
			echo 'Usuario No Existe!';
	}
	
	function login($name,$level){
	    $data['users'] = array(
	        'userName' => $name,
	        'nivel'	=>	$level,
	        'logged_in' => TRUE
	        );
	     $data['name'] = $name;
	     $this->session->set_userdata($data['users']);
		 //nivel 1: admin - nivel 2: user_parcial
	     if($this->session->userdata('nivel') == 1){
			$this->load->database('user_total');
	     	echo 'ok';
	     }
	}
	
	function reloadLog(){
		$data['name'] =  $this->session->userdata('userName');
		$this->load->view('base/loginUserAdmin',$data);
	}
	
	function logout()
	{
		$this->session->sess_destroy();
		redirect('');
	}
	function contacto()
	{
		$this->load->view('base/contactenos');
	}
	
	function sendMensaje(){
		$config = array(
			array(
				'field'	=>	'nombre',
				'label'	=>	'Su nombre',
				'rules'	=>	'required'
			),
			array(
				'field'	=>	'email',
				'label'	=>	'E-mail',
				'rules'	=>	'valid_email'
			),
			array(
				'field'	=>	'msj',
				'label'	=>	'El mensaje',
				'rules'	=>	'required'
			)
		);
		$this->form_validation->set_rules($config);
		if($this->form_validation->run() == FALSE)
        {
             echo  validation_errors("<div class='msj_error'>","</div>");
        }
        else{
        	//Configuramos el correo para contacto@termaule.cl
        	$this->load->library('email');
			$from = $this->input->post('email');
			$name = $this->input->post('nombre');
			$content = $this->input->post('msj');
			$this->email->from($from, $name);
			$this->email->to('contacto@termaule.cl');

			$this->email->subject('Mensaje desde www.termaule.cl');
			$this->email->message($content);
			
			if(!$this->email->send())
				echo "<div class='msj_error'>Su mensaje no ha sido enviado debido a un error del servidor. Inténtelo más tarde.</div>";
			else
				echo "<div class='msj_success'>Su mensaje ha sido enviado satisfactoriamente. Muchas gracias.</div>";
			
			//echo $this->email->print_debugger();
        }
		
	}
	
	function funcionarios()
	{
		$this->load->view('base/funcionarios');
	}
        function leyes()
        {
            $this->load->view('base/header');
            //$this->load->view('base/leyes');
            $this->load->view('base/TCE');
            $this->load->view('base/footer');
        }
        function autosTCE()
        {
            $this->load->view('base/header');
            $this->load->view('base/TCE');
            $this->load->view('base/footer');
        }
        function autosTER()
        {
            $this->load->view('base/header');
            $this->load->view('base/TER');
            $this->load->view('base/footer');
        }
}//Fin controlador Home
?>